// pages/index/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
    hasUserInfo: false,
    canIUseGetUserProfile: false,
    banners: [],
    courses: [],
    notices: [],
    loading: true,
    refreshing: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 检查是否支持getUserProfile
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    
    // 初始化页面数据
    this.initPageData()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 设置页面标题
    wx.setNavigationBarTitle({
      title: '苒兴教育'
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 检查登录状态
    this.checkLoginStatus()
    
    // 刷新数据
    this.refreshData()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      refreshing: true
    })
    
    this.refreshData().finally(() => {
      this.setData({
        refreshing: false
      })
      wx.stopPullDownRefresh()
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 加载更多课程
    this.loadMoreCourses()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    return {
      title: '苒兴教育 - 专业的在线学习平台',
      path: '/pages/index/index',
      imageUrl: '/images/share-bg.jpg'
    }
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline: function () {
    return {
      title: '苒兴教育 - 专业的在线学习平台',
      imageUrl: '/images/share-bg.jpg'
    }
  },

  /**
   * 初始化页面数据
   */
  initPageData: function () {
    Promise.all([
      this.loadBanners(),
      this.loadCourses(),
      this.loadNotices()
    ]).finally(() => {
      this.setData({
        loading: false
      })
    })
  },

  /**
   * 刷新数据
   */
  refreshData: function () {
    return Promise.all([
      this.loadBanners(),
      this.loadCourses(),
      this.loadNotices()
    ])
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus: function () {
    const app = getApp()
    const userInfo = app.globalData.userInfo
    
    if (userInfo) {
      this.setData({
        userInfo: userInfo,
        hasUserInfo: true
      })
    }
  },

  /**
   * 获取用户信息
   */
  getUserProfile: function () {
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (res) => {
        const userInfo = res.userInfo
        this.setData({
          userInfo: userInfo,
          hasUserInfo: true
        })
        
        // 保存到全局数据
        const app = getApp()
        app.globalData.userInfo = userInfo
        
        // 登录
        this.login(userInfo)
      },
      fail: (err) => {
        console.error('获取用户信息失败', err)
        wx.showToast({
          title: '获取用户信息失败',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 登录
   */
  login: function (userInfo) {
    wx.login({
      success: (res) => {
        if (res.code) {
          // 发送登录请求
          wx.request({
            url: getApp().globalData.apiBase + '/auth/login',
            method: 'POST',
            data: {
              code: res.code,
              userInfo: userInfo
            },
            success: (response) => {
              if (response.data.success) {
                // 保存token
                wx.setStorageSync('token', response.data.data.token)
                
                // 更新全局数据
                const app = getApp()
                app.globalData.token = response.data.data.token
                app.globalData.userInfo = response.data.data.userInfo
                
                wx.showToast({
                  title: '登录成功',
                  icon: 'success'
                })
              } else {
                wx.showToast({
                  title: response.data.message || '登录失败',
                  icon: 'none'
                })
              }
            },
            fail: (err) => {
              console.error('登录请求失败', err)
              wx.showToast({
                title: '网络错误',
                icon: 'none'
              })
            }
          })
        } else {
          console.error('获取登录凭证失败', res.errMsg)
        }
      },
      fail: (err) => {
        console.error('wx.login失败', err)
      }
    })
  },

  /**
   * 加载轮播图
   */
  loadBanners: function () {
    return new Promise((resolve, reject) => {
      wx.request({
        url: getApp().globalData.apiBase + '/banners',
        method: 'GET',
        success: (res) => {
          if (res.data.success) {
            this.setData({
              banners: res.data.data
            })
          }
          resolve(res)
        },
        fail: (err) => {
          console.error('加载轮播图失败', err)
          reject(err)
        }
      })
    })
  },

  /**
   * 加载课程列表
   */
  loadCourses: function () {
    return new Promise((resolve, reject) => {
      wx.request({
        url: getApp().globalData.apiBase + '/courses',
        method: 'GET',
        data: {
          page: 1,
          limit: 10,
          featured: true
        },
        success: (res) => {
          if (res.data.success) {
            this.setData({
              courses: res.data.data.list
            })
          }
          resolve(res)
        },
        fail: (err) => {
          console.error('加载课程失败', err)
          reject(err)
        }
      })
    })
  },

  /**
   * 加载更多课程
   */
  loadMoreCourses: function () {
    // 实现加载更多逻辑
  },

  /**
   * 加载公告
   */
  loadNotices: function () {
    return new Promise((resolve, reject) => {
      wx.request({
        url: getApp().globalData.apiBase + '/notices',
        method: 'GET',
        data: {
          page: 1,
          limit: 5
        },
        success: (res) => {
          if (res.data.success) {
            this.setData({
              notices: res.data.data.list
            })
          }
          resolve(res)
        },
        fail: (err) => {
          console.error('加载公告失败', err)
          reject(err)
        }
      })
    })
  },

  /**
   * 轮播图点击事件
   */
  onBannerTap: function (e) {
    const banner = e.currentTarget.dataset.banner
    if (banner.link) {
      if (banner.type === 'page') {
        wx.navigateTo({
          url: banner.link
        })
      } else if (banner.type === 'web') {
        wx.navigateTo({
          url: `/pages/webview/webview?url=${encodeURIComponent(banner.link)}`
        })
      }
    }
  },

  /**
   * 课程点击事件
   */
  onCourseTap: function (e) {
    const courseId = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/course/detail/detail?id=${courseId}`
    })
  },

  /**
   * 公告点击事件
   */
  onNoticeTap: function (e) {
    const noticeId = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/notice/detail/detail?id=${noticeId}`
    })
  },

  /**
   * 搜索点击事件
   */
  onSearchTap: function () {
    wx.navigateTo({
      url: '/pages/search/search'
    })
  },

  /**
   * 分类点击事件
   */
  onCategoryTap: function (e) {
    const categoryId = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/course/list/list?categoryId=${categoryId}`
    })
  }
})